package cn.zhukelili.generic;

import java.util.Vector;

/**
 * @description: 被观察者
 * @author: hhbeast
 * @since: 2018/7/22 19:44
 */
public abstract class Subject {
    //定义一个观察者数组
    private Vector<Observer> obsVector = new Vector<Observer>();

    //增加一个观察者
    public void addObserver(Observer o) {
        this.obsVector.add(o);
    }

    //删除一个观察者
    public void delObserver(Observer o) {
        this.obsVector.remove(o);
    }

    //通知所有观察者
    public void notifyObservers() {
        for (Observer o : this.obsVector) {
            o.update();
        }
    }
}

/*
被观察者的职责非常简单，就是定义谁能够观察，谁不能观察，程序中使用ArrayList和
Vector没有太大的差别，ArrayList是线程异步，不安全；Vector是线程同步，安全——就这点
区别
 */